package com.yu.Controller;

import com.yu.POJO.*;
import com.yu.tool.*;
import com.yu.Service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: LittleFisher
 * @Date: 2021/05/31/19:40
 * @Description: MyJson.msg:true/false操作成功还是失败,MyJson.error String 错误信息
 *               pageTool pageTool.Total 查询结果总行数, pageTool.rows 查询结果集
 */
@Controller
@RequestMapping("admin")
public class AdminController {
    //依赖注入
    @Autowired
    AdminService adminService;

    //to页面

    /**
     * 去所有学生信息页面
     * @return
     */
    @RequestMapping("/toGetAllStuInfo")
    public String toGetAllStuInfo(){//记得做访问限制
        return "admin/getAllStuInfo";
    }

    /**
     * 去管理员crud学生信息页面
     * @return
     */
    @RequestMapping("/toUpStuInfo")
    public String toUpStuInfo(){//记得做访问限制
        return "admin/AdminUpStu";
    }

    /**
     * 去管理员crud班级信息页面
     * @return
     */
    @RequestMapping("/toUpClazz")
    public String toUpClazz(){
        return "admin/AdUpClazz";
    }

    /**
     * 去管理员通过参数查询学生页面
     * @return
     */
    @RequestMapping("/toQueryStu")
    public String toQueryStu(){
        return "admin/QueryStu";
    }

    /**
     * 去管理员crud课程页面
     * @return
     */
    @RequestMapping("/toAdUpCourse")
    public String toAdUpCourse(){
        return "admin/adUpCourse";
    }

    /**
     * 去管理员crud老师页面
     * @return
     */
    @RequestMapping("/toAdUpTea")
    public String toAdUpTea(){
        return "admin/adUpTea";
    }

    /**
     * 去管理员给班级增加课程页面
     * @return
     */
    @RequestMapping("/toClazzJoinCourse")
    public String toClazzJoinCourse(){
        return "admin/clazzJoinCourse";
    }

    /**
     * 去所有选课信息页面
     * @return
     */
    @RequestMapping("/toGetAllSC")
    public String toGetAllSC(){
        return "admin/getAllSC";
    }

    /**
     * 去admin删出通告页面
     * @return
     */
    @RequestMapping("toDelNotice")
    public String toDelNotice(){
        return "admin/delNotice";
    }

    /**
     * 去admin 发布通告页面
     * @return
     */
    @RequestMapping("toNotice")
    public String toNotice(){
        return "admin/notice";
    }

//crud Information
    //student
    /**
     * 获取所有学生信息
     * @param page 当前分页页码
     * @param rows 一页多少行
     * @return 所有学生信息的集合(rows) 和总数(Total)
     */
    @RequestMapping("/getAllStuInfo")
    @ResponseBody
    public pageTool getAllStuInfo(int page, int rows){
        return adminService.getAllStuInfo(page,rows);
    }

    /**
     * 获取所有学生信息
     * @param page 当前分页页码
     * @param rows 一页多少行
     * @return 所有学生信息的集合(rows) 和总数(Total)
     */
    @RequestMapping("/getAllStuInfoWithClazz")
    @ResponseBody
    public pageTool getAllStuInfoWithClazz(int page, int rows,int clazz_id){
        return adminService.getAllStuInfoWithClazz(page,rows,clazz_id);
    }

    /**
     * 增加学生
     * @param student 要增加的学生
     * @return MyJson
     */
    @RequestMapping("/adAddStu")
    @ResponseBody
    public MyJson adAddStu(Student student){//
        student.stuToClazz_Info();
        return adminService.adAddStu(student );
    }

    /**
     * 删除学生BY Id
     * @param id 要删除的学生的id
     * @return MyJson
     */
    @RequestMapping("/adDelStu")
    @ResponseBody
    public MyJson adDelStu(@RequestParam int id){
        return adminService.adDelStuById(id);
    }

    /**
     *  修改学生信息
     * @param student 要修改的学生
     * @return MyJson
     */
    @RequestMapping("/adUpStu")
    @ResponseBody
    public MyJson adUpStu(Student student){
        student.stuToClazz_Info();
        MyJson myJson = adminService.adUpStuInfo(student);
        return myJson;
    }

    /**
     *  通过参数查询学生
     * @param page 当前分页页码
     * @param rows 一页多少行
     * @param str 查询参数
     * @param st 当初始化页面时加载所有学生信息
     * @return 查询结果所有学生信息的集合(rows) 和总数(Total)
     */
    @RequestMapping("/QueryAllStuInfo")
    @ResponseBody
    public pageTool QueryAllStuInfo(int page, int rows,@RequestParam(value="str", required=false, defaultValue="null")String str,@RequestParam(value="st", required=false, defaultValue="null")String st){
        if("null".equals(st) ){
            return adminService.getAllStuInfo(page,rows);
        }else {
            return adminService.getStuByStr(str);
        }

    }


    //clazz
    /**
     * 获取所有班级
     * @return
     */
    @RequestMapping("/getAllClazz")
    @ResponseBody
    public List<Clazz> getAllClazz(){
        return adminService.getAllClazz();
    }

    /**
     * 获取所有系
     * @return
     */
    @RequestMapping("/getAllDept")
    @ResponseBody
    public List<Dept> getAllDept(){
        return adminService.getAllDept();
    }

    /**
     * 删除班级(id)
     * @param id 要删除的班级的id
     * @return
     */
    @RequestMapping("/adDelClazz")
    @ResponseBody
    public MyJson adDelClazz(int id){
        return adminService.adDelClazz(id);
    }

    /**
     * 增加班级
     * @param clazz 要增加的班级
     * @return
     */
    @RequestMapping("/adAddClazz")
    @ResponseBody
    public MyJson adAddClazz(Clazz clazz){
        return adminService.adAddClazz(clazz);
    }

    /**
     *  修改班级
     * @param clazz 要增加的班级
     * @return
     */
    @RequestMapping("/adUpClazz")
    @ResponseBody
    public MyJson adUpClazz(Clazz clazz){
        return adminService.adUpClazz(clazz);
    }

    //course
    /**
     * 获取所有课程
     * @param page 当前分页页码
     * @param rows 一页多少行
     * @return 查询结果课程的集合(rows) 和总数(Total)
     */
    @RequestMapping("/getAllCourse")
    @ResponseBody
    public pageTool getAllCourse(int page, int rows){
        return adminService.getAllCourse(page,rows);
    }

    /**
     *  增加课程
     * @param course 要增加的课程
     * @return
     */
    @RequestMapping("/adAddCourse")
    @ResponseBody
    public MyJson adAddCourse(Course course){
        return adminService.addCourse(course);
    }

    /**
     * 修改课程
     * @param course 要修改的课程
     * @return
     */
    @RequestMapping("/adUpCourse")
    @ResponseBody
    public MyJson adUpCourse(Course course){
        return adminService.upCourse(course);
    }

    /**
     * 删除课程
     * @param id 要删除的课程的id
     * @return
     */
    @RequestMapping("/adDelCourse")
    @ResponseBody
    public MyJson adDelCourse(int id){
        return adminService.delCourse(id);
    }

    /**
     *  获取所有必修课
     * @param page 当前分页页码
     * @param rows 一夜行数
     * @return 查询结果必修课结果集(rows),总行数(Totals)
     */
    @RequestMapping("/getAllCourseByRequired")
    @ResponseBody
    public pageTool getAllCourseByRequired(int page, int rows){
        return adminService.getRequiredCourse(page,rows,"必修");
    }

    @RequestMapping("getAllCC")
    @ResponseBody
    public List<CC> getAllCC(){
        return adminService.getAllCC();
    }
    /**
     * 班级加入课程
     * @param clazz_id 班级id
     * @param course_id 课程id
     * @return
     */
    @RequestMapping("/clazzJoinCourse")
    @ResponseBody
    public MyJson clazzJoinCourse(int clazz_id, int course_id){
        return adminService.clazzJoinCourse(clazz_id,course_id);
    }

    /**
     *  获取所有学生选课信息(必修和选修)
     * @param page 当前分页页码
     * @param rows 一夜行数
     * @return 查询结果选课结果集(rows),总行数(Totals)
     */
    @RequestMapping("/getAllSC")
    @ResponseBody
    public pageTool getAllSC(int page, int rows){
        return adminService.getAllSC(page,rows);
    }

    //teacher
    /**
     * 获取所有老师信息
     * @return
     */
    @RequestMapping("/getAllTea")
    @ResponseBody
    public List<Teacher> getAllTea(){
        return adminService.getAllTea();
    }

    /**
     *  获取所有老师信息带分页
     * @param page 当前分页页码
     * @param rows 一页行数
     * @return 查询结果老师的集合(rows) 和总数(Total)
     */
    @RequestMapping("/getAllTeaWithPage")
    @ResponseBody
    public pageTool getAllTeaWithPage(int page, int rows){
        return adminService.getAllTeaWithPage(page,rows);
    }

    /**
     *  增加老师信息
     * @param teacher 要增加的老师信息
     * @return
     */
    @RequestMapping("/adAddTea")
    @ResponseBody
    public MyJson adAddTea(Teacher teacher){
        return adminService.addTea(teacher);
    }

    /**
     *  修改老师
     * @param teacher 要修改的老师信息
     * @return
     */
    @RequestMapping("/adUpTea")
    @ResponseBody
    public MyJson adUpTea(Teacher teacher){
        return adminService.upTea(teacher);
    }

    /**
     * 删除老师信息
     * @param id 要删除老师的id
     * @return
     */
    @RequestMapping("/adDelTea")
    @ResponseBody
    public MyJson adDelTea(int id){
        return adminService.delTea(id);
    }

    //notice
    /**
     *  保存通告
     * @param notice 通告
     * @return
     */
    @RequestMapping("/saveNews")
    @ResponseBody
    public MyJson saveNews(Notice notice){
        return adminService.saveNews(notice);
    }

    /**
     *  获取所有通告
     * @return
     */
    @RequestMapping("getAllNotice")
    @ResponseBody
    public List<Notice> getAllNotice(){
        return adminService.getAllNotice();
    }

    /**
     * 删除通告
     * @param id 要删除的通告的id
     * @return
     */
    @RequestMapping("AdDelNotice")
    @ResponseBody
    public MyJson AdDelNotice(int id){
        return adminService.AdDelNotice(id);
    }


}
